#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    printf("stdin-> %d\n", stdin->_fileno);
    printf("stdout-> %d\n", stdout->_fileno);
    printf("stderr-> %d\n", stderr->_fileno);

//    char buffer[128];
//    ssize_t s = read(0, buffer, strlen(buffer));
//    if(s < 0)
//        return 1;
//    buffer[s] = '\0';
//    printf("%s", buffer);

//    const char* msg = "Hello Linux\n";
//    write(1, msg, strlen(msg));
//    write(2, msg, strlen(msg));
    

//    int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
    
//    const char* msg = "Hello Linux";
//    write(fd, msg, strlen(msg));

//    close(fd);

    return 0;
}


//#define ONE (1<<0)   // 1
//#define TWO (1<<1)   // 2
//#define THREE (1<<2) // 4
//#define FOUR (1<<3)  // 8

//void show(int flags)
//{
//    if(flags&ONE)
//        printf("function1\n");
//    if(flags&TWO)
//        printf("function2\n");
//    if(flags&THREE)
//        printf("function3\n");
//    if(flags&FOUR)
//        printf("function4\n");
//}

//int main()
//{
//    show(ONE);
//    printf("---------------------------\n");
//    show(ONE|THREE);
//    printf("---------------------------\n");
//    show(THREE|FOUR);
//    printf("---------------------------\n");
//    show(ONE|FOUR);

//    return 0;
//}


//int main()
//{
//    printf("pid: %d\n", getpid());
//    // 打开路径和文件名，默认在当前路径下，进程运行后会将 /proc/进程/cwd 添加到创建文件名前
//    FILE* fp = fopen("log.txt", "a");
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//
//    const char* message = "Hello C++";
//    //fwrite(stdin, strlen(message), 1, fp);
//    fprintf(stdout,"%s : %d\n", message, 954);
//
//    fclose(fp);
//
//    return 0;
//}
